<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>一个前后端分离的快速开发脚手架 | CANCAN Love Java</title>
    <meta name="generator" content="VuePress 1.9.9">
    <link rel="icon" href="https://img.cancan.fit/vuepressBlog/avatar.jpg">
    <script language="javascript" type="text/javascript" src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script language="javascript" type="text/javascript" src="/js/MouseClickEffect.js"></script>
    <script>
          var _hmt = _hmt || [];
          (function() {
            var hm = document.createElement("script");
            hm.src = "https://hm.baidu.com/hm.js?b0aae218897fa9d8a9f76e9a77e0b3c6";
            var s = document.getElementsByTagName("script")[0]; 
            s.parentNode.insertBefore(hm, s);
          })();
        </script>
    <meta name="description" content="这里是灿灿的博客(学习版)...欢迎您的来访">
    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
    
    <link rel="preload" href="/assets/css/0.styles.c492337a.css" as="style"><link rel="preload" href="/assets/js/app.15f3d1fd.js" as="script"><link rel="preload" href="/assets/js/5.ca401195.js" as="script"><link rel="preload" href="/assets/js/1.8b416e81.js" as="script"><link rel="preload" href="/assets/js/17.7474baf0.js" as="script"><link rel="preload" href="/assets/js/12.00b40901.js" as="script"><link rel="prefetch" href="/assets/js/10.a12826ac.js"><link rel="prefetch" href="/assets/js/11.1b7d6dd3.js"><link rel="prefetch" href="/assets/js/13.3a9b9c99.js"><link rel="prefetch" href="/assets/js/14.7d1e871c.js"><link rel="prefetch" href="/assets/js/15.e734b00e.js"><link rel="prefetch" href="/assets/js/16.6eb4ec21.js"><link rel="prefetch" href="/assets/js/18.ac8965aa.js"><link rel="prefetch" href="/assets/js/19.ebcb0e51.js"><link rel="prefetch" href="/assets/js/20.d404083b.js"><link rel="prefetch" href="/assets/js/21.6f009612.js"><link rel="prefetch" href="/assets/js/22.c65ba1bb.js"><link rel="prefetch" href="/assets/js/23.7fff4e5c.js"><link rel="prefetch" href="/assets/js/24.5e0f2c4a.js"><link rel="prefetch" href="/assets/js/25.f9521823.js"><link rel="prefetch" href="/assets/js/26.7ef32412.js"><link rel="prefetch" href="/assets/js/27.db55beba.js"><link rel="prefetch" href="/assets/js/28.fed9a0d9.js"><link rel="prefetch" href="/assets/js/29.71b5f381.js"><link rel="prefetch" href="/assets/js/3.ece670e3.js"><link rel="prefetch" href="/assets/js/30.353cf836.js"><link rel="prefetch" href="/assets/js/31.461dbf5d.js"><link rel="prefetch" href="/assets/js/4.cfb38e50.js"><link rel="prefetch" href="/assets/js/6.595ebcbc.js"><link rel="prefetch" href="/assets/js/7.bec14422.js"><link rel="prefetch" href="/assets/js/8.8f66a46e.js"><link rel="prefetch" href="/assets/js/9.f4c927b6.js">
    <link rel="stylesheet" href="/assets/css/0.styles.c492337a.css">
  </head>
  <body>
    <div id="app" data-server-rendered="true"><div class="theme-container no-sidebar" data-v-106e3130><div data-v-106e3130><LoadingPage class="loading-wrapper" data-v-106e3130 data-v-106e3130></LoadingPage> <div class="password-shadow password-wrapper-out" style="display:none;" data-v-4d3be7b7 data-v-106e3130 data-v-106e3130><h3 class="title" style="display:none;" data-v-4d3be7b7 data-v-4d3be7b7>CANCAN Love Java</h3> <!----> <label id="box" class="inputBox" style="display:none;" data-v-4d3be7b7 data-v-4d3be7b7><input type="password" value="" data-v-4d3be7b7> <span data-v-4d3be7b7>Konck! Knock!</span> <button data-v-4d3be7b7>OK</button></label> <div class="footer" style="display:none;" data-v-4d3be7b7 data-v-4d3be7b7><span data-v-4d3be7b7><i class="iconfont reco-theme" data-v-4d3be7b7></i> <a target="blank" href="https://vuepress-theme-reco.recoluan.com" data-v-4d3be7b7>vuePress-theme-reco</a></span> <span data-v-4d3be7b7><i class="iconfont reco-copyright" data-v-4d3be7b7></i> <a data-v-4d3be7b7><span data-v-4d3be7b7>灿灿爱吃肉</span>
            
          <!---->
          2023
        </a></span></div></div> <div class="hide" data-v-106e3130><div data-v-106e3130><div id="smart" class="wrapper-page" style="background-image:url(https://img.cancan.fit/vuepressBlog/WechatIMG5.png);background-position-x:center;background-position-y:center;background-size:cover;background-repeat-x:no-repeat;background-repeat-y:no-repeat;" data-v-106e3130><header class="navbar" data-v-106e3130><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="https://img.cancan.fit/vuepressBlog/bear.jpg" alt="CANCAN Love Java" class="logo"> <span class="site-name">CANCAN Love Java</span></a> <div class="links"><div id="dayNightSwitch" class="generalWrapper" data-v-68728e36><a class="click" data-v-68728e36><div class="onOff daySwitch" data-v-68728e36><div class="star star1" data-v-68728e36></div> <div class="star star2" data-v-68728e36></div> <div class="star star3" data-v-68728e36></div> <div class="star star4" data-v-68728e36></div> <div class="star star5" data-v-68728e36></div> <div class="star sky" data-v-68728e36></div> <div class="sunMoon" data-v-68728e36><div class="crater crater1" data-v-68728e36></div> <div class="crater crater2" data-v-68728e36></div> <div class="crater crater3" data-v-68728e36></div> <div class="cloud part1" data-v-68728e36></div> <div class="cloud part2" data-v-68728e36></div></div></div></a></div> <div class="search-box"><i class="iconfont reco-search"></i> <input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"><i class="iconfont reco-home"></i>
  主页
</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-category"></i>
      博客
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/categories/日常随笔/" class="nav-link"><i class="iconfont undefined"></i>
  日常随笔
</a></li><li class="dropdown-item"><!----> <a href="/categories/灿灿爱Java/" class="nav-link"><i class="iconfont undefined"></i>
  灿灿爱Java
</a></li><li class="dropdown-item"><!----> <a href="/categories/Linux/" class="nav-link"><i class="iconfont undefined"></i>
  Linux
</a></li><li class="dropdown-item"><!----> <a href="/categories/前端技术/" class="nav-link"><i class="iconfont undefined"></i>
  前端技术
</a></li></ul></div></div><div class="nav-item"><a href="/tag/" class="nav-link"><i class="iconfont reco-tag"></i>
  标签
</a></div><div class="nav-item"><a href="/timeline/" class="nav-link"><i class="iconfont reco-date"></i>
  时间轴
</a></div><div class="nav-item"><a href="/about/" class="nav-link"><i class="iconfont reco-account"></i>
  关于
</a></div> <!----></nav></div></header> <div class="sidebar-mask" data-v-106e3130></div> <aside class="sidebar" data-v-106e3130><div class="personal-info-wrapper" data-v-d528efe2 data-v-106e3130><img src="https://img.cancan.fit/vuepressBlog/avatar.jpg" alt="author-avatar" class="personal-img" data-v-d528efe2> <h3 class="name" data-v-d528efe2>
    灿灿爱吃肉
  </h3> <div class="num" data-v-d528efe2><div data-v-d528efe2><h3 data-v-d528efe2>16</h3> <h6 data-v-d528efe2>文章</h6></div> <div data-v-d528efe2><h3 data-v-d528efe2>17</h3> <h6 data-v-d528efe2>标签</h6></div></div> <hr data-v-d528efe2></div> <nav class="nav-links"><div class="nav-item"><a href="/" class="nav-link"><i class="iconfont reco-home"></i>
  主页
</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title"><i class="iconfont reco-category"></i>
      博客
    </span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/categories/日常随笔/" class="nav-link"><i class="iconfont undefined"></i>
  日常随笔
</a></li><li class="dropdown-item"><!----> <a href="/categories/灿灿爱Java/" class="nav-link"><i class="iconfont undefined"></i>
  灿灿爱Java
</a></li><li class="dropdown-item"><!----> <a href="/categories/Linux/" class="nav-link"><i class="iconfont undefined"></i>
  Linux
</a></li><li class="dropdown-item"><!----> <a href="/categories/前端技术/" class="nav-link"><i class="iconfont undefined"></i>
  前端技术
</a></li></ul></div></div><div class="nav-item"><a href="/tag/" class="nav-link"><i class="iconfont reco-tag"></i>
  标签
</a></div><div class="nav-item"><a href="/timeline/" class="nav-link"><i class="iconfont reco-date"></i>
  时间轴
</a></div><div class="nav-item"><a href="/about/" class="nav-link"><i class="iconfont reco-account"></i>
  关于
</a></div> <!----></nav> <!----> </aside> <div class="password-shadow password-wrapper-in" style="display:none;" data-v-4d3be7b7 data-v-106e3130><h3 class="title" style="display:none;" data-v-4d3be7b7 data-v-4d3be7b7>一个前后端分离的快速开发脚手架</h3> <!----> <label id="box" class="inputBox" style="display:none;" data-v-4d3be7b7 data-v-4d3be7b7><input type="password" value="" data-v-4d3be7b7> <span data-v-4d3be7b7>Konck! Knock!</span> <button data-v-4d3be7b7>OK</button></label> <div class="footer" style="display:none;" data-v-4d3be7b7 data-v-4d3be7b7><span data-v-4d3be7b7><i class="iconfont reco-theme" data-v-4d3be7b7></i> <a target="blank" href="https://vuepress-theme-reco.recoluan.com" data-v-4d3be7b7>vuePress-theme-reco</a></span> <span data-v-4d3be7b7><i class="iconfont reco-copyright" data-v-4d3be7b7></i> <a data-v-4d3be7b7><span data-v-4d3be7b7>灿灿爱吃肉</span>
            
          <!---->
          2023
        </a></span></div></div></div> <div data-v-106e3130><main class="page"><div class="page-title" style="display:none;"><h1 class="title">一个前后端分离的快速开发脚手架</h1> <div class="page-info" data-v-04a855f8><i class="iconfont reco-account" data-v-04a855f8><span data-v-04a855f8>灿灿爱吃肉</span></i> <i class="iconfont reco-date" data-v-04a855f8><span data-v-04a855f8>2020-12-20</span></i> <i class="iconfont reco-eye" data-v-04a855f8><span id="/blogs/other/%E4%B8%80%E4%B8%AA%E5%89%8D%E5%90%8E%E7%AB%AF%E5%88%86%E7%A6%BB%E7%9A%84%E5%BF%AB%E9%80%9F%E5%BC%80%E5%8F%91%E8%84%9A%E6%89%8B%E6%9E%B6.html" data-flag-title="Your Article Title" class="leancloud-visitors" data-v-04a855f8><a class="leancloud-visitors-count" style="font-size:.9rem;font-weight:normal;color:#999;"></a></span></i> <i class="iconfont reco-tag tags" data-v-04a855f8><span class="tag-item" data-v-04a855f8>java</span><span class="tag-item" data-v-04a855f8>vue</span></i></div></div> <div class="theme-reco-content content__default" style="display:none;"><div class="custom-block tip"><p class="custom-block-title">摘要</p> <p>使用zealsay初体验</p></div> <p align="center"><a href="https://vuejs.org" target="_blank" rel="noopener noreferrer"><img width="300" src="https://pan.zealsay.com/2019091615686216710547.png" alt="Vue logo"></a></p> <p align="center"></p><p><img src="https://img.shields.io/badge/vue-2.x-brightgreen.svg" alt="vue 2.x"> <img src="https://img.shields.io/badge/nuxt-2.12.2-ff69b4.svg" alt="nuxt 2.12.2"> <img src="https://img.shields.io/badge/vuetify-2.x-green" alt="vuetify 2.3.1"> <img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License MIT"> <a href="https://travis-ci.com/GodLikeZeal/zealsay_front" target="_blank" rel="noopener noreferrer"><img src="https://travis-ci.com/GodLikeZeal/zealsay_front.svg?branch=master" alt="Build Status"><span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> <a href="https://hub.docker.com/r/zealsay/zealsay_front" title="DockerHub" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/docker/stars/zealsay/zealsay_front.svg" alt=""><span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> <a href="https://hub.docker.com/r/zealsay/zealsay_front" title="DockerHub" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/docker/pulls/zealsay/zealsay_front.svg" alt=""><span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> <a href="https://img.shields.io/github/downloads/GodLikeZeal/zealsay_front/total" title="Github" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/github/downloads/GodLikeZeal/zealsay_front/total.svg" alt=""><span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p> <p></p> <p>🚀 zealsay是一套前后端分离的快速开发脚手架,抽取一些常用的解决方案,以快,轻为主,打造出一个开箱即用的轻应用脚手架。<br>
🍰 后台基于Spring Boot,主体采用Spring Security和Mybatis-Plus。<br>
🧀 前端采用基于Vue的服务端渲染解决方案Nuxt,样式风格基于Vuetify这款优秀的MD风格样式库。</p> <h3 id="指南"><a href="#指南" class="header-anchor">#</a> 指南</h3> <h3 id="在线体验"><a href="#在线体验" class="header-anchor">#</a> 在线体验</h3> <ul><li><a href="https://beta.zealsay.com/admin/dashboard" target="_blank" rel="noopener noreferrer">后台管理体验<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> 管理员账号:admin 密码：abc123</li> <li><a href="https://dev-api.zealsay.com/doc.html" target="_blank" rel="noopener noreferrer">接口文档管理<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> 授权用户名：zealsay 密码: api123456</li> <li><a href="https://blog.zealsay.com" target="_blank" rel="noopener noreferrer">作者博客<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> 一款基于zealsay开发的博客</li> <li><a href="https://www.zealsay.com" target="_blank" rel="noopener noreferrer">备用博客<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> 一款基于vuepress构建的的静态博客</li></ul> <h3 id="devops示意图"><a href="#devops示意图" class="header-anchor">#</a> devops示意图</h3> <p><img src="https://pan.zealsay.com/2020080609191416000000.png" alt="devops" title="devops"></p> <h3 id="前端技术选型-🎉🎉"><a href="#前端技术选型-🎉🎉" class="header-anchor">#</a> 前端技术选型 🎉🎉</h3> <h4 id="core"><a href="#core" class="header-anchor">#</a> Core</h4> <ol><li>Framework</li></ol> <ul><li><code>node 14.5</code></li> <li><code>npm 6.14.5</code></li></ul> <ol start="2"><li>主框架</li></ol> <ul><li><code>Nuxt 2.12.2</code></li> <li><code>Vuetify 2.x</code></li></ul> <ol start="3"><li>核心模块</li></ol> <ul><li><code>nuxt-auth</code> nuxt授权认证</li> <li><code>vuex</code>全局对象管理</li> <li><code>nuxtjs/axios</code> 服务请求</li></ul> <h4 id="扩展"><a href="#扩展" class="header-anchor">#</a> 扩展</h4> <ol start="4"><li>组件</li></ol> <ul><li><code>mavon-editor</code> 一款优秀的<code>markdown</code>编辑器</li> <li><code>sweetalert2</code> 优秀弹窗插件</li> <li><code>vue-cropper</code>图片裁剪插件</li> <li><code>vue-perfect-scrollbar</code> 滚动条样式美化</li> <li><code>vue-scroll-reveal</code> 内容过渡动画</li> <li><code>vue-typed-js</code> 打字机效果插件</li> <li><code>vue-chartist</code> 漂亮图表插件</li> <li><code>vue-concise-slider</code> 轮播插件</li> <li><code>vue-count-to</code> 数字增长特效</li> <li><code>xss</code> 防xss攻击</li> <li><code>material-design-icons-iconfont</code> mdi图标库</li></ul> <h3 id="后端技术选型-🔥🔥"><a href="#后端技术选型-🔥🔥" class="header-anchor">#</a> 后端技术选型 🔥🔥</h3> <h4 id="core-2"><a href="#core-2" class="header-anchor">#</a> Core</h4> <ol><li>Framework</li></ol> <ul><li><code>java 8</code></li> <li><code>Maven 3.5.4</code></li></ul> <ol start="2"><li>主框架</li></ol> <ul><li><code>Spring Boot 2.1.6.RELEASE</code></li> <li><code>Spring Security 5.1.5.RELEASE</code></li> <li><code>Mybatis Plus 3.3.1</code></li></ul> <ol start="3"><li>运行容器</li></ol> <ul><li><code>Undertow</code></li></ul> <h4 id="扩展-2"><a href="#扩展-2" class="header-anchor">#</a> 扩展</h4> <ol start="4"><li>数据层</li></ol> <ul><li><code>Mysql</code></li> <li><code>Redis</code></li> <li><code>Hikari</code>连接池</li></ul> <ol start="5"><li>tools</li></ol> <ul><li><code>Spring Validation</code> 优雅校验</li> <li><code>Mapstruct</code> 对象映射</li> <li><code>Jasypt</code> 敏感信息加密</li> <li><code>Jackson</code>json利器</li> <li><code>Commons-lang3</code> apache语言扩展包</li> <li><code>Spring Mail</code> 邮件发送</li> <li><code>Openfeign</code> 服务调用</li></ul> <ol start="6"><li>常用第三方</li></ol> <ul><li><code>七牛云对象云存储</code></li> <li><code>Github第三方登录</code></li> <li><code>阿里云SMS短信服务</code></li> <li><code>Hitokoto 一言接口</code></li></ul> <h3 id="内置功能"><a href="#内置功能" class="header-anchor">#</a> 内置功能</h3> <ul><li>用户登录注册</li> <li>博客端首页展示</li> <li>友链展示</li> <li>关于页面展示</li> <li>分类查询分页</li> <li>后台Dashbord</li> <li>用户管理</li> <li>角色管理</li> <li>文章管理</li> <li>图片上传和头像裁剪上传</li> <li>标签云管理</li> <li>数据字典配置</li> <li>站点信息配置</li></ul> <blockquote><p>更多细节功能可以前往在线体验站点体验,更多功能正在火速🔥🔥🔥开发中...</p></blockquote> <h3 id="开源协议"><a href="#开源协议" class="header-anchor">#</a> 开源协议</h3> <ul><li>📚  本项目遵循MIT开源协议，可以学习，可以商用，可以二次开发。</li> <li>📖  如果对本项目进行二次开源，请保留作者信息。</li></ul> <h3 id="关于"><a href="#关于" class="header-anchor">#</a> 关于</h3> <ul><li>🍓 欢迎关注作者 <a href="https://blog.zealsay.com" target="_blank" rel="noopener noreferrer">博客<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a>，也是基于<code>zealsay</code>开发的,后期会分享一些开发心得。</li> <li>🍉 作者是一名后台开发者，接触前端时间并不长，项目有不足之处和不合理的地方还请海涵。</li> <li>关于优化和好的建议，也欢迎联系作者和提issue。同时也欢迎大家PR 👏👏👏</li> <li>开发不易，来来回回的优化，占用了我几乎所有业余时间，希望各位大佬喜欢本项目的话，不吝在github和gitee上给个 star 以示支持❤️❤️❤️，你们的支持是我坚持下去的最大动力。爱你们😍😍😍</li></ul></div> <footer class="page-edit" style="display:none;"><!----> <!----></footer> <!----> <!----> <!----></main> <!----></div></div></div></div></div><div class="global-ui"><div class="back-to-ceiling" style="right:1rem;bottom:6rem;width:2.5rem;height:2.5rem;border-radius:.25rem;line-height:2.5rem;display:none;" data-v-c6073ba8 data-v-c6073ba8><svg t="1574745035067" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5404" class="icon" data-v-c6073ba8><path d="M526.60727968 10.90185116a27.675 27.675 0 0 0-29.21455937 0c-131.36607665 82.28402758-218.69155461 228.01873535-218.69155402 394.07834331a462.20625001 462.20625001 0 0 0 5.36959153 69.94390903c1.00431239 6.55289093-0.34802892 13.13561351-3.76865779 18.80351572-32.63518765 54.11355614-51.75690182 118.55860487-51.7569018 187.94566865a371.06718723 371.06718723 0 0 0 11.50484808 91.98906777c6.53300375 25.50556257 41.68394495 28.14064038 52.69160883 4.22606766 17.37162448-37.73630017 42.14135425-72.50938081 72.80769204-103.21549295 2.18761121 3.04276886 4.15646224 6.24463696 6.40373557 9.22774369a1871.4375 1871.4375 0 0 0 140.04691725 5.34970492 1866.36093723 1866.36093723 0 0 0 140.04691723-5.34970492c2.24727335-2.98310674 4.21612437-6.18497483 6.3937923-9.2178004 30.66633723 30.70611158 55.4360664 65.4791928 72.80769147 103.21549355 11.00766384 23.91457269 46.15860503 21.27949489 52.69160879-4.22606768a371.15156223 371.15156223 0 0 0 11.514792-91.99901164c0-69.36717486-19.13165746-133.82216804-51.75690182-187.92578088-3.42062944-5.66790279-4.76302748-12.26056868-3.76865837-18.80351632a462.20625001 462.20625001 0 0 0 5.36959269-69.943909c-0.00994388-166.08943902-87.32547796-311.81420293-218.6915546-394.09823051zM605.93803103 357.87693858a93.93749974 93.93749974 0 1 1-187.89594924 6.1e-7 93.93749974 93.93749974 0 0 1 187.89594924-6.1e-7z" p-id="5405" data-v-c6073ba8></path><path d="M429.50777625 765.63860547C429.50777625 803.39355007 466.44236686 1000.39046097 512.00932183 1000.39046097c45.56695499 0 82.4922232-197.00623328 82.5015456-234.7518555 0-37.75494459-36.9345906-68.35043303-82.4922232-68.34111062-45.57627738-0.00932239-82.52019037 30.59548842-82.51086798 68.34111062z" p-id="5406" data-v-c6073ba8></path></svg></div><div class="Sakura" data-v-1137e66e><canvas id="canvas_sakura" style="z-index:5;" data-v-1137e66e></canvas></div><div></div><canvas id="vuepress-canvas-cursor"></canvas><APlayer audio="" fixed="true" mini="true" autoplay="autoplay" theme="#b7daff" loop="loop" order="list" preload="auto" volume="0.15" mutex="true" lrc-type="0" list-max-height="250" storage-name="vuepress-plugin-meting" id="aplayer-fixed"></APlayer><!----></div></div>
    <script src="/assets/js/app.15f3d1fd.js" defer></script><script src="/assets/js/5.ca401195.js" defer></script><script src="/assets/js/1.8b416e81.js" defer></script><script src="/assets/js/17.7474baf0.js" defer></script><script src="/assets/js/12.00b40901.js" defer></script>
  </body>
</html>
